Include migrating-GtkComboBox.sgml.
authorMatthias Clasen <maclas@gmx.de>
Sat, 28 Feb 2004 00:09:48 +0000 (00:09 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Sat, 28 Feb 2004 00:09:48 +0000 (00:09 +0000)
Sat Feb 28 01:11:53 2004  Matthias Clasen  <maclas@gmx.de>

* gtk/gtk-docs.sgml: Include migrating-GtkComboBox.sgml.

Sat Feb 28 01:11:34 2004  Matthias Clasen  <maclas@gmx.de>

* gtk/Makefile.am (content_files): Add migrating-GtkComboBox.sgml.

Fri Feb 27 22:54:01 2004  Matthias Clasen  <maclas@gmx.de>

* gtk/gtk-docs.sgml: Sort deprecated widgets alphabetically.

docs/reference/ChangeLog
docs/reference/gtk/Makefile.am
docs/reference/gtk/gtk-docs.sgml
docs/reference/gtk/migrating-GtkComboBox.sgml [new file with mode: 0644]

index 11cfaff2be9ea4921267b7573cd5dca4449cf737..b80f0f795fdc835fe4a3c97839cac386f3ed5e3b 100644 (file)
@@ -1,3 +1,15 @@
+Sat Feb 28 01:11:53 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * gtk/gtk-docs.sgml: Include migrating-GtkComboBox.sgml.
+
+Sat Feb 28 01:11:34 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * gtk/Makefile.am (content_files): Add migrating-GtkComboBox.sgml.
+
+Fri Feb 27 22:54:01 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * gtk/gtk-docs.sgml: Sort deprecated widgets alphabetically.
+
 2004-02-27  Federico Mena Quintero  <federico@ximian.com>
 
        * gtk/migrating-GtkAction.sgml: Put explicit <link> elements
index dc96cf3ed1c123a810b45059d17a530822947a7e..315ef93fbd9ce16b9731605054a0e9c79361010f 100644 (file)
@@ -44,10 +44,11 @@ IGNORE_HFILES=                              \
        gtkintl.h                       \
        gtkkeyhash.h                    \
        gtkmarshal.h                    \
+       gtkpathbar.h                    \
        gtkprivate.h                    \
-       gtktreeprivate.h                \
        gtkrbtree.h                     \
        gtktreedatalist.h               \
+       gtktreeprivate.h                \
        gtktextbtree.h                  \
        gtktextdisplay.h                \
        gtktextiterprivate.h            \
@@ -93,6 +94,7 @@ content_files =                                       \
        framebuffer.sgml                        \
        migrating-checklist.sgml                \
        migrating-GtkAction.sgml                \
+       migrating-GtkComboBox.sgml              \
        migrating-GtkFileChooser.sgml           \
        objects_grouped.sgml                    \
        question_index.sgml                     \
index 5c14e72d6254b4f7b236148f90bc360b7e6e5e3a..52566dbb99b7cb0fc12c1e43d5be41cceb1d63f2 100644 (file)
 <!ENTITY gtk-migrating-checklist SYSTEM "migrating-checklist.sgml">
 <!ENTITY gtk-migrating-GtkFileChooser SYSTEM "migrating-GtkFileChooser.sgml">
 <!ENTITY gtk-migrating-GtkAction SYSTEM "migrating-GtkAction.sgml">
+<!ENTITY gtk-migrating-GtkComboBox SYSTEM "migrating-GtkComboBox.sgml">
 <!ENTITY version SYSTEM "version.xml">
 <!ENTITY gtk-query-immodules SYSTEM "gtk-query-immodules-2.0.xml">
 ]>
@@ -514,17 +515,17 @@ that is, GUI components such as <link linkend="GtkButton">GtkButton</link> or
 
     <chapter id="DeprecatedObjects">
       <title>Deprecated</title>
-        &GtkCombo;
-        &GtkOptionMenu;
-        &GtkItemFactory;
         &GtkCList;      
         &GtkCTree;
+        &GtkCombo;
+        &GtkItemFactory;
         &GtkList;
         &GtkListItem;
+        &GtkOldEditable;
+        &GtkOptionMenu;
         &GtkPixmap;
-        &GtkProgress;
         &GtkPreview;
-        &GtkOldEditable;
+        &GtkProgress;
         &GtkText;
         &GtkTipsQuery;
         &GtkTree;
@@ -547,6 +548,7 @@ that is, GUI components such as <link linkend="GtkButton">GtkButton</link> or
     &gtk-Changes-2-0;
     &gtk-migrating-GtkFileChooser;
     &gtk-migrating-GtkAction;
+    &gtk-migrating-GtkComboBox;
   </part>
 
   <part>
diff --git a/docs/reference/gtk/migrating-GtkComboBox.sgml b/docs/reference/gtk/migrating-GtkComboBox.sgml
new file mode 100644 (file)
index 0000000..ced0f8f
--- /dev/null
@@ -0,0 +1,231 @@
+<chapter id="gtk-migrating-GtkComboBox">
+  <chapterinfo>
+    <author>
+      <firstname>Matthias</firstname>
+      <surname>Clasen</surname>
+      <affiliation>
+       <address>
+         <email>maclas@gmx.de</email>
+       </address>
+      </affiliation>
+    </author>
+  </chapterinfo>
+
+  <title>Migrating from GtkOptionMenu and GtkCombo to GtkComboBox and GtkComboBoxEntry</title>
+
+  <para>
+    Prior to 2.4, GTK+ offered two widgets for the task of selecting one
+    item from a list of options. 
+    <link linkend="GtkOptionMenu">GtkOptionMenu</link> presents the list of 
+    options as a menu while <link linkend="GtkCombo">GtkCombo</link> presents 
+    them in a Windows-style list popup. The only difference between the two 
+    is that a <link linkend="GtkCombo">GtkCombo</link> allows to manually
+    edit the selected value, while the 
+    <link linkend="GtkOptionMenu">GtkOptionMenu</link> does not.
+  </para> 
+  <para>
+    In GTK+ 2.4, a unified API for list selection was introduced, with 
+    <link linkend="GtkComboBox">GtkComboBox</link> for the non-editable case 
+    and <link linkend="GtkComboBoxEntry">GtkComboBoxEntry</link> for the 
+    editable case. 
+    The selection of the display style &mdash; menu or list &mdash;
+    is no longer done at the API level, but has been made themeable via
+    the style property 
+    <link linkend="GtkComboBox--appearance">GtkComboBox::appearance</link>.
+  </para>
+
+  <section id="migrating-GtkOptionMenu">
+    <title>Migrating from GtkOptionMenu to GtkComboBox</title>
+    
+    <para>
+      Here is an example of a simple, but typical use of 
+      <link linkend="GtkOptionMenu">GtkOptionMenu</link>:
+      <informalexample><programlisting>
+GtkWidget *option_menu, *menu, *menu_item;
+
+option_menu = gtk_option_menu_new ();      
+menu = gtk_menu_new ();
+
+menu_item = gtk_menu_item_new_with_label ("First Item");
+gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
+gtk_widget_show (menu_item);
+menu_item = gtk_menu_item_new_with_label ("Second Item");
+gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
+gtk_widget_show (menu_item);
+menu_item = gtk_menu_item_new_with_label ("Third Item");
+gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
+gtk_widget_show (menu_item);
+
+gtk_option_menu_set_menu (GTK_OPTION_MENU (option_menu), menu);
+      </programlisting></informalexample>
+      In order to react to the user's selection, connect to the "changed"
+      signal on the option menu and use <link linkend="gtk-option-menu-get-history"><function>gtk_option_menu_get_history()</function></link>
+      to retrieve the index of the selected item.
+    </para>
+    <para>
+      And here is how it would be done with a 
+      <link linkend="GtkComboBox">GtkComboBox</link>:
+      <informalexample><programlisting>
+GtkWidget *combo_box;
+
+combo_box = gtk_combo_box_new_text ();
+
+gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), "First Item");
+gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), "Second Item");
+gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), "Third Item");
+      </programlisting></informalexample>
+      In order to react to the user's selection, connect to the "changed"
+      signal on the combo box and use <link linkend="gtk-combo-box-get-active"><function>gtk_combo_box_get_active()</function></link>
+      to retrieve the index of the selected item.
+    </para>
+
+    <para>
+      A slightly more complex example involving images:
+      <informalexample><programlisting>
+GtkWidget *option_menu, *menu, *menu_item;
+
+option_menu = gtk_option_menu_new ();      
+menu = gtk_menu_new ();
+
+menu_item = gtk_image_menu_item_new_with_label ("First Item");
+gtk_image_menu_item_set_image (gtk_image_new_from_pixbuf (pixbuf1));
+gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
+gtk_widget_show (menu_item);
+menu_item = gtk_image_menu_item_new_with_label ("Second Item");
+gtk_image_menu_item_set_image (gtk_image_new_from_pixbuf (pixbuf2));
+gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
+gtk_widget_show (menu_item);
+menu_item = gtk_image_menu_item_new_with_label ("Third Item");
+gtk_image_menu_item_set_image (gtk_image_new_from_pixbuf (pixbuf3));
+gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
+gtk_widget_show (menu_item);
+
+gtk_option_menu_set_menu (GTK_OPTION_MENU (option_menu), menu);
+      </programlisting></informalexample>
+    </para>
+    <para>
+      can be done using a <link linkend="GtkComboBox">GtkComboBox</link>
+      as follows:
+      <informalexample><programlisting>
+GtkListStore *store;
+GtkTreeIter iter;
+GtkCellRenderer *renderer;
+GtkWidget *combo_box;
+
+store = gtk_list_store_new (2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
+
+gtk_list_store_append (store, &amp;iter);
+gtk_list_store_set (store, &amp;iter, 0, pixbuf1, 1, "First Item", -1);
+gtk_list_store_append (store, &amp;iter);
+gtk_list_store_set (store, &amp;iter, 0, pixbuf2, 1, "Second Item", -1);
+gtk_list_store_append (store, &amp;iter);
+gtk_list_store_set (store, &amp;iter, 0, pixbuf3, 1, "Third Item", -1);
+
+combo_box = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store));
+
+renderer = gtk_cell_renderer_pixbuf_new ();
+gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), renderer, FALSE);
+gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_box), renderer,
+                                "pixbuf", 0,
+                                NULL);
+
+renderer = gtk_cell_renderer_text_new ();
+gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), renderer, TRUE);
+gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_box), renderer,
+                                "text", 1,
+                                NULL);
+      </programlisting></informalexample>
+    </para>
+  </section>
+
+  <section id="migrating-GtkCombo">
+    <title>Migrating from GtkCombo to GtkComboBoxEntry</title>
+
+    <para>
+      Here is an example of a simple, but typical use of a
+      <link linkend="GtkCombo">GtkCombo</link>:
+      <informalexample><programlisting>
+GtkWidget *combo;
+GList *items = NULL;
+
+items = g_list_append (items, "First Item");
+items = g_list_append (items, "Second Item");
+items = g_list_append (items, "Third Item");
+
+combo = gtk_combo_new ();
+gtk_combo_set_popdown_strings (GTK_COMBO (combo), items);
+      </programlisting></informalexample>
+      In order to react to the user's selection, connect to the "changed"
+      signal on the combo and use 
+      <literal>gtk_entry_get_text (GTK_ENTRY (combo->entry))</literal>
+      to retrieve the selected text.
+    </para>
+    <para>
+      And here is how it would be done using <link linkend="GtkComboBoxEntry">GtkComboBoxEntry</link>:
+      <informalexample><programlisting>
+combo_box = gtk_combo_box_entry_new_text ();
+
+gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), "First Item");
+gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), "Second Item");
+gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), "Third Item");
+      </programlisting></informalexample>
+      In order to react to the user's selection, connect to the "changed"
+      signal on the combo and use 
+      <literal>gtk_entry_get_text (GTK_ENTRY (GTK_BIN (combo_box)->child))</literal>
+      to retrieve the selected text.
+    </para>
+  </section>
+
+  <section id="new-features-GtkComboBox">
+    <title>New features</title>
+
+    <para>
+      The new widgets have more to offer than a mere combination of the
+      features of <link linkend="GtkOptionMenu">GtkOptionMenu</link> and 
+      <link linkend="GtkCombo">GtkCombo</link>. Notable new features 
+      include:
+      <variablelist>
+        <varlistentry>
+          <term>Grid mode</term>
+          <listitem><para>Sometimes it is preferable to display the available
+            options not in a linear list, but in a grid. A typical example 
+            would be a "color combo" where the individual items are small 
+           square color swatches. The new widgets support gridded display 
+            with the functions 
+            <link linkend="gtk-combo-box-set-wrap-width"><function>gtk_combo_box_set_wrap_width()</function></link>, 
+            <link linkend="gtk-combo-box-set-row-span-column"><function>gtk_combo_box_set_row_span_column()</function></link> and 
+            <link linkend ="gtk-combo-box-set-column-span-column"><function>gtk_combo_box_set_column_span_column()</function></link>.
+          </para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Display of icons</term>
+          <listitem><para>An often-heard complaint about 
+          <link linkend="GtkOptionMenu">GtkOptionMenu</link> is that the
+          icons which appear in the image menu items in its menu are not
+         displayed in the button showing the selected item. This limitation
+          has been removed in <link linkend="GtkComboBox">GtkComboBox</link>;
+          the selected item appears in the same way as the options in 
+          the popup.
+          </para></listitem>
+        </varlistentry>
+        <varlistentry>
+          <term>Full tree model power</term>
+          <listitem><para>
+            Since the new widgets are built around the same models that are
+            used for <link linkend="GtkTreeView">GtkTreeView</link>, all of
+            the powerful machinery of tree models and cell renderers can be 
+            used.
+          </para></listitem>
+        </varlistentry>
+      </variablelist>
+    </para>
+  </section>
+
+</chapter>
+
+<!--
+Local variables:
+mode: sgml
+sgml-parent-document: ("gtk-docs.sgml" "book" "part" "chapter")
+End:
+-->